﻿using System;
using System.IO;
using System.Data;
using System.Windows;
using System.Collections;
using System.Windows.Input;
using System.ComponentModel;
using System.Windows.Controls;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Controls;
using Sinacor.Infra.UI.Controls.SmartClient;
using System.Collections.Generic;
using Sinacor.Infra.UI.Controls.SmartClient.Validation;
using Sinacor.UI.Bovespa.Ordens.View.SmartClient;
using Sinacor.UI.Bovespa.Clientes.View.SmartClient;
using System.Windows.Threading;
using System.Linq;
using Sinacor.UI.Bovespa.ManutencaoOrdens.Presenter;

namespace Sinacor.UI.Bovespa.ManutencaoOrdens.View.SmartClient
{
    public partial class ManutencaoOrdens : SinacorWindow, IManutencaoOrdens
    {
        #region IManutencaoOrdens Members

        /// <summary>
        /// Apresenta Broker Cliente
        /// </summary>
        /// <param name="codigoBroker"></param>
        public void ApresentarBrokerCliente(int? codigoBroker)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.CodigoBrokerCliente = codigoBroker;
                TxtFormularioBroker.UpdateTarget(SinacorTextBox.TextProperty);
            }
            else
            {
                this.CurrentModel.CodigoBrokerCliente = codigoBroker;
            }
        }

        /// <summary>
        /// Apresenta Descricao Titulo
        /// </summary>
        /// <param name="descricao"></param>
        public void ApresentarDescricaoTitulo(string descricao)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.DescricaoAtivo = descricao;
                TxtFormularioDescricaoAtivo.UpdateTarget(SinacorTextBox.TextProperty);
            }
            else
            {
                this.CurrentModel.DescricaoAtivo = descricao;
            }
        }

        /// <summary>
        /// Apresenta Detalhe Ordem Casado
        /// </summary>
        public void ApresentarDetalheOrdemCasado()
        {
            _style = BaseRow.GridRowBusiness02;
        }

        /// <summary>
        /// Apresenta Detalhe Ordem Nao Casado
        /// </summary>
        public void ApresentarDetalheOrdemNaoCasado()
        {
            _style = BaseRow.GridRowBusiness06;
        }

        /// <summary>
        /// Apresenta Detalhe Ordem Parcialmente Casado
        /// </summary>
        public void ApresentarDetalheOrdemParcialmenteCasado()
        {
            _style = BaseRow.GridRowBusiness04;
        }

        /// <summary>
        /// Apresenta Digito Cliente
        /// </summary>
        /// <param name="digito"></param>
        public void ApresentarDigitoCliente(int digito)
        {
            short outShort = 0;
            bool sucesso = false;

            sucesso = short.TryParse(digito.ToString(), out outShort);

            if (sucesso)
            {
                if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
                {
                    PresenterManutencaoOrdens.OrdemAtual.DigitoCliente = outShort;
                    TxtFormularioDigitoCliente.UpdateTarget(SinacorInt32TextBox.ValueProperty);
                }
                else
                {
                    this.CurrentModel.DigitoCliente = outShort;
                }
            }
        }

        /// <summary>
        /// Apresenta Nome Cliente
        /// </summary>
        /// <param name="nome"></param>
        public void ApresentarNomeCliente(string nome)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.NomeCliente = nome;
                TxtFormularioNomeCliente.UpdateTarget(SinacorTextBox.TextProperty);
            }
            else
            {
                this.CurrentModel.NomeCliente = nome;
            }
        }

        /// <summary>
        /// Apresenta Ordem Cancelada
        /// </summary>
        public void ApresentarOrdemCancelada()
        {
            _style = BaseRow.GridRowBusiness10;
        }

        /// <summary>
        /// Apresenta Ordem Casada
        /// </summary>
        public void ApresentarOrdemCasada()
        {
            _style = BaseRow.GridRowBusiness02;
        }

        /// <summary>
        /// Apresenta Ordem Nao Casada
        /// </summary>
        public void ApresentarOrdemNaoCasada()
        {
            _style = BaseRow.GridRowBusiness06;
        }

        /// <summary>
        /// Apresenta Ordem Nao Casada Com Pre Boleto
        /// </summary>
        public void ApresentarOrdemNaoCasadaComPreBoleto()
        {
            _style = BaseRow.GridRowBusiness03;
        }

        /// <summary>
        /// Apresenta Ordem Parcia lmenteCasada
        /// </summary>
        public void ApresentarOrdemParcialmenteCasada()
        {
            _style = BaseRow.GridRowBusiness04;
        }

        /// <summary>
        /// Apresenta Saldo Negociavel
        /// </summary>
        public void ApresentarSaldoNegociavel(Decimal saldoNegociavel, Model.Ordem ordem)
        {
            SinacorMessageBox.Show(String.Format(this.FindResource("Bovespa.ManutencaoOrdens.ExceptionMessage.ClienteSaldoNegociavelAtivo").ToString(),
                                                 ordem.ApelidoCliente, 
                                                 saldoNegociavel,
                                                 ordem.Ativo),
                                   SinacorMessageBoxButton.Ok,
                                   SinacorMessageBoxImage.Exclamation);
        }

        public void AtribuirAtivoObrigatorio(bool obrigatorio)
        {
            TxtFormularioAtivo.IsRequired = obrigatorio;
        }

        public void AtribuirClienteObrigatorio(bool obrigatorio)
        {
            TxtFormularioApelidoCliente.IsRequired = obrigatorio;
            TxtFormularioDigitoCliente.IsRequired = obrigatorio;
        }

        /// <summary>
        /// Atribui Codigo ISIN
        /// </summary>
        /// <param name="codigoISIN"></param>
        public void AtribuirCodigoISIN(string codigoISIN)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.CodigoISIN = codigoISIN;
            }
            else
            {
                this.CurrentModel.CodigoISIN = codigoISIN;
            }
        }

        /// <summary>
        /// Coloca o foco na célula/campo de Cliente
        /// </summary>
        public void AtribuirFocoCampoCliente()
        {
            SinacorTextBox textBox;

            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                if (TxtFormularioApelidoCliente.IsVisible)
                {
                    TxtFormularioApelidoCliente.Focus();
                }
                else
                {
                    //Correção de problema:
                    //o comando de foco não funciona se o controle não estiver com a propriedade Is Visible
                    //e o foco acaba se perdendo na tela
                    TxtFormularioApelidoCliente.IsVisibleChanged += new DependencyPropertyChangedEventHandler(TxtFormularioApelidoCliente_IsVisibleChanged);
                }
            }
            else
            {
                textBox = (SinacorTextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtClienteOrdem");

                if(textBox!=null)
                {
                    textBox.Focus();
                }
            }
        }

        /// <summary>
        /// Atribui Mercado
        /// </summary>
        /// <param name="mercado"></param>
        public void AtribuirMercado(Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado mercado)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.Mercado = mercado;
                CboFormularioTipoMercado.UpdateTarget(SinacorComboBox.SelectedValueProperty);
            }
            else
            {
                this.CurrentModel.Mercado = mercado;
            }
        }

        public void AtribuirMercadoObrigatorio(bool obrigatorio)
        {
            CboFormularioTipoMercado.IsRequired = obrigatorio;
        }

        /// <summary>
        /// Atribui Natureza Operacao
        /// </summary>
        /// <param name="naturezaOperacao"></param>
        public void AtribuirNaturezaOperacao(EnumWrapper<Model.Enum.NaturezaOperacao> naturezaOperacao)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                if (naturezaOperacao == null)
                {
                    RbtFormularioNaturezaCompra.IsChecked = false;
                    RbtFormularioNaturezaVenda.IsChecked = false;
                }
                else if (naturezaOperacao.Value == Model.Enum.NaturezaOperacao.Compra)
                {
                    RbtFormularioNaturezaCompra.IsChecked = true;
                }
                else if (naturezaOperacao.Value == Model.Enum.NaturezaOperacao.Venda)
                {
                    RbtFormularioNaturezaVenda.IsChecked = true;
                }
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    //Bind campo natureza operação
                    (ControlHelper.FindChild(dtgOrdens.GetEditRow(), "cboNatOper") as SinacorComboBox).UpdateTarget(SinacorComboBox.ItemsSourceProperty);
                }
            }
        }

        public void AtribuirOperadorObrigatorio(bool obrigatorio)
        {
            CboFormularioOperador.IsRequired = obrigatorio;
        }

        /// <summary>
        /// Atribuir Ordem Administrada Concorrente
        /// </summary>
        /// <param name="ordemAdmConcorrente"></param>
        public void AtribuirOrdemAdministradaConcorrente(bool ordemAdmConcorrente)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.IndicadorOrdemAdmConcorrente = ordemAdmConcorrente;
                ChkFormularioIndicadorOrdemAdmConcorrente.UpdateTarget(SinacorCheckBox.IsCheckedProperty);
            }
            else
            {
                this.CurrentModel.IndicadorOrdemAdmConcorrente = ordemAdmConcorrente;
            }
        }

        /// <summary>
        /// Atribui Ordem Discricionaria
        /// </summary>
        /// <param name="ordemDiscricionaria"></param>
        public void AtribuirOrdemDiscricionaria(bool ordemDiscricionaria)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.Discricionaria = ordemDiscricionaria;
                ChkFormularioDiscricionaria.UpdateTarget(SinacorCheckBox.IsCheckedProperty);
            }
            else
            {
                CurrentModel.Discricionaria = ordemDiscricionaria;
            }
        }

        /// <summary>
        /// Atribui Percentual Corretagem
        /// </summary>
        /// <param name="percentual"></param>
        public void AtribuirPercentualCorretagem(decimal? percentual)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.PercentualCorretagem = percentual;
                TxtFormularioPercentAcrescimoReducao.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            }
            else
            {
                this.CurrentModel.PercentualCorretagem = percentual;
            }
        }

        public void AtribuirPercentualCorretagemObrigatorio(bool obrigatorio)
        {
            TxtFormularioPercentAcrescimoReducao.IsRequired = obrigatorio;
        }

        /// <summary>
        /// Atribui Percentual Financiamento Obrigatorio
        /// </summary>
        public void AtribuirPercentualFinanciamentoObrigatorio(bool obrigatorio)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                TxtFormularioPercentualFinanciamento.IsRequired = obrigatorio;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorDecimalTextBox txtInsertPercFinanciamento = (SinacorDecimalTextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtInsertPercFinanciamento");

                    if (txtInsertPercFinanciamento != null)
                        txtInsertPercFinanciamento.IsRequired = obrigatorio;
                }
            }
        }

        /// <summary>
        /// Atribui Pessoa Vinculada
        /// </summary>
        /// <param name="pessoaVinculada"></param>
        public void AtribuirPessoaVinculada(bool pessoaVinculada)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.IndicadorClientePessoaVinculada = pessoaVinculada;
                ChkFormularioPessoaVinculada.UpdateTarget(SinacorCheckBox.IsCheckedProperty);
            }
            else
            {
                this.CurrentModel.IndicadorClientePessoaVinculada = pessoaVinculada;
            }
        }

        public void AtribuirQuantidadeObrigatorio(bool obrigatorio)
        {
            TxtFormularioQuantidade.IsRequired = obrigatorio;
        }

        /// <summary>
        /// Atribui Quantidade Ordem Tipo Financiamento
        /// </summary>
        public void AtribuirQuantidadeOrdemTipoFinanciamento()
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                TxtFormularioQuantidade.Value = 0;
                TxtFormularioQuantidade.IsEnabled = false;
                PresenterManutencaoOrdens.OrdemAtual.Quantidade = 0;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorDecimalTextBox txtInsertQuantidade = (SinacorDecimalTextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtInsertQuantidade");

                    if (txtInsertQuantidade != null)
                    {
                        txtInsertQuantidade.Value = 0;
                        txtInsertQuantidade.IsEnabled = false;
                    }

                    if (dtgOrdens.EditItem != null)
                    {
                        Model.Ordem ordemAux = (Model.Ordem)dtgOrdens.EditItem;
                        ordemAux.Quantidade = 0;
                    }
                }
            }
        }

        public void AtribuirSitucaoObrigatorio(bool obrigatorio)
        {
            CboFormularioSituacao.IsRequired = obrigatorio;
        }

        /// <summary>
        /// Atribui Tipo Liquidacao
        /// </summary>
        /// <param name="tipoLiquidacao"></param>
        public void AtribuirTipoLiquidacao(Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoLiquidacao tipoLiquidacao)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.TipoLiquidacao = tipoLiquidacao;
                CboFormularioTipoDeLiquidacao.UpdateTarget(SinacorComboBox.SelectedValueProperty);
            }
            else
            {
                this.CurrentModel.TipoLiquidacao = tipoLiquidacao;
            }
        }

        /// <summary>
        /// Atribui Tipo Ordem
        /// </summary>
        /// <param name="tipoOrdem"></param>
        public void AtribuirTipoOrdem(Model.Enum.TipoOrdem tipoOrdem)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.TipoOrdem = tipoOrdem;
                CboFormularioTipoOrdem.UpdateTarget(SinacorComboBox.SelectedValueProperty);
            }
            else
            {
                this.CurrentModel.TipoOrdem = tipoOrdem;
            }
        }

        public void AtribuirTipoLiquidacaoObrigatorio(bool obrigatorio)
        {
            CboFormularioTipoDeLiquidacao.IsRequired = obrigatorio;
        }

        public void AtribuirTipoOrdemObrigatorio(bool obrigatorio)
        {
            CboFormularioTipoOrdem.IsRequired = obrigatorio;
        }

        /// <summary>
        /// Atribui Valor Financiamento Obrigatorio
        /// </summary>
        public void AtribuirValorFinanciamentoObrigatorio(bool obrigatorio)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                TxtFormularioValorFinanciamento.IsRequired = obrigatorio;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorDecimalTextBox txtInsertValorFinanciamento = (SinacorDecimalTextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtInsertValorFinanciamento");

                    if (txtInsertValorFinanciamento != null)
                        txtInsertValorFinanciamento.IsRequired = obrigatorio;
                }
            }
        }

        /// <summary>
        /// Define vencimento termo como obrigatório
        /// </summary>
        public void AtribuirVencimentoTermoObrigatorio(bool obrigatorio)
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                TxtFormularioVencimentoTermo.IsRequired = obrigatorio;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorInt32TextBox txtInsertVencimentoTermo = (SinacorInt32TextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtInsertVencimentoTermo");

                    if (txtInsertVencimentoTermo != null)
                        txtInsertVencimentoTermo.IsRequired = obrigatorio;
                }
            }
        }

        /// <summary>
        /// Atualiza Calendario
        /// </summary>
        public void AtualizarCalendario()
        {
            this.cmbDataFiltro.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            this.cmbDataFiltro.SelectedValue = PresenterManutencaoOrdens.InformacoesMovimento.DataMovimento.ToShortDateString();
        }

        /// <summary>
        /// Atualiza Detalhes Ordem
        /// </summary>
        public void AtualizarDetalhesOrdem()
        {
            this.DtgDetalhes.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);
        }

        /// <summary>
        /// Atualiza Emissor
        /// </summary>
        public void AtualizarEmissor()
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                CboFormularioEmissor.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                    ((SinacorComboBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "CmbEmissor")).UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            }
        }

        public void AtualizarFormulario()
        {
            DtpFormularioDataOrdem.UpdateTarget(SinacorDatePicker.ValueProperty);
            TxtFormularioNumeroOrdem.UpdateTarget(SinacorTextBox.TextProperty);
            TxtFormularioNumeroOrdemSubSequencia.UpdateTarget(SinacorTextBox.TextProperty);
            TxtFormularioCarteira.UpdateTarget(SinacorInt32TextBox.ValueProperty);
            TxtFormularioNumeroOrdemOriginal.UpdateTarget(SinacorInt32TextBox.ValueProperty);
            DtpFormularioValidade.UpdateTarget(SinacorDatePicker.ValueProperty);
            ChkFormularioIndicadorOrdemAdmConcorrente.UpdateTarget(SinacorCheckBox.IsCheckedProperty);
            ChkFormularioDiscricionaria.UpdateTarget(SinacorCheckBox.IsCheckedProperty);
            TxtFormularioValorFinanciamento.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            TxtFormularioPercentualFinanciamento.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            ChkFormularioPessoaVinculada.UpdateTarget(SinacorCheckBox.IsCheckedProperty);
            TxtFormularioBroker.UpdateTarget(SinacorTextBox.TextProperty);
            TxtFormularioPercentAcrescimoReducao.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            TxtFormularioVencimentoTermo.UpdateTarget(SinacorInt32TextBox.ValueProperty);
            TxtFormularioQuantidadeAnexo4.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            TxtFormularioPreco.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            TxtFormularioQuantidadeAnexo5.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            TxtFormularioQuantidadeExecutada.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            TxtFormularioIndSistExterno.UpdateTarget(SinacorTextBox.TextProperty);
            ChkFormularioDesprezarSaldo.UpdateTarget(SinacorCheckBox.IsCheckedProperty);
            TxtFormularioQuantidade.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            TxtFormularioAtivo.UpdateTarget(SinacorFilteredTextBox.TextProperty);
            TxtFormularioApelidoCliente.UpdateTarget(SinacorTextBox.TextProperty);
            TxtFormularioDigitoCliente.UpdateTarget(SinacorInt32TextBox.ValueProperty);
            TxtFormularioNomeCliente.UpdateTarget(SinacorTextBox.TextProperty);
            TxtFormularioAtivo.UpdateTarget(SinacorTextBox.TextProperty);
            TxtFormularioDescricaoAtivo.UpdateTarget(SinacorTextBox.TextProperty);
            TxtFormularioValorDolar.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            TxtFormularioValorOrdem.UpdateTarget(SinacorTextBox.TextProperty);
            CboFormularioTipoMercado.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            CboFormularioTipoMercado.UpdateTarget(SinacorComboBox.SelectedValueProperty);
            CboFormularioOperador.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            CboFormularioOperador.UpdateTarget(SinacorComboBox.SelectedValueProperty);
            CboFormularioEmissor.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            CboFormularioEmissor.UpdateTarget(SinacorComboBox.SelectedValueProperty);
            CboFormularioTipoOrdem.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            CboFormularioTipoOrdem.UpdateTarget(SinacorComboBox.SelectedValueProperty);
            CboFormularioBolsa.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            CboFormularioBolsa.UpdateTarget(SinacorComboBox.SelectedValueProperty);
            CboFormularioSituacao.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            CboFormularioSituacao.UpdateTarget(SinacorComboBox.SelectedValueProperty);
            CboFormularioTipoDeLiquidacao.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            CboFormularioTipoDeLiquidacao.UpdateTarget(SinacorComboBox.SelectedValueProperty);
            TxtFormularioObservacao.UpdateTarget(SinacorTextBox.TextProperty);

            BtnFormularioPreBoleto.IsEnabled = IsPreBoletoEnabled;
            CboFormularioMsgObservacoes.SelectedIndex = -1;

            if (PresenterManutencaoOrdens.Estado != Model.Enum.EstadoTela.Leitura)
            {
                CboFormularioMsgObservacoes.SelectionChanged += new SelectionChangedEventHandler(CboFormularioMsgObservacoes_SelectionChanged);
            }
        }

        /// <summary>
        /// Atualiza Justificativas
        /// </summary>
        public void AtualizarJustificativas()
        {
            this.DtgJustificativasHistorico.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);
            this.DtgJustificativasRecente.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);
        }

        /// <summary>
        /// Atualiza Mensagens
        /// </summary>
        public void AtualizarMensagens()
        {
            CboFormularioMsgObservacoes.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            CboJustificativasHistorico.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
            CboJustificativasRecente.UpdateTarget(SinacorComboBox.ItemsSourceProperty);
        }

        /// <summary>
        /// Atualiza Operadores
        /// </summary>
        public void AtualizarOperadores()
        {
            this.cmbOperador.UpdateTarget(SinacorComboBox.ItemsSourceProperty);

            if (this.PresenterManutencaoOrdens.Preferencias != null)
                this.cmbOperador.SelectedValue = this.PresenterManutencaoOrdens.Preferencias.CodigoOperador;
        }

        /// <summary>
        /// Atualiza Ordens
        /// </summary>
        public void AtualizarOrdens()
        {
            dtgOrdens.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);
        }

        /// <summary>
        /// Atualiza Quantidades Sumarizadas
        /// </summary>
        public void AtualizarQuantidadesSumarizadas()
        {
            this.txtSumarizacaoCompra.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
            this.txtSumarizacaoVenda.UpdateTarget(SinacorDecimalTextBox.ValueProperty);
        }

        public void AtualizarValorOrdem()
        {
            TxtFormularioValorOrdem.UpdateTarget(SinacorTextBox.TextProperty);
        }

        /// <summary>
        /// Configura Digito Verificador Obrigatorio
        /// </summary>
        public void ConfigurarDigitoVerificadorObrigatorio()
        {
            SinacorInt32TextBox txtInsertDigito = null;

            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                txtInsertDigito = TxtFormularioDigitoCliente;
            }
            else
            {
                if (dtgOrdens.IsInserting)
                    txtInsertDigito = ((SinacorInt32TextBox)ControlHelper.FindChild(dtgOrdens.GetInsertionRow(), "txtInsertDigito"));
                else
                    txtInsertDigito = ((SinacorInt32TextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtInsertDigito"));
            }

            if (txtInsertDigito != null)
                txtInsertDigito.IsRequired = true;
        }

        /// <summary>
        /// Confirma Fechamento Ordem Adm Concorrente
        /// </summary>
        /// <returns></returns>
        public bool ConfirmarFechamentoOrdemAdmConcorrente()
        {
            SinacorMessageBoxResult result = SinacorMessageBox.Show(FindResource("Bovespa.ManutencaoOrdens.Message.FecharOrdem").ToString(), SinacorMessageBoxButton.YesNo);

            return result == SinacorMessageBoxResult.Yes;
        }

        /// <summary>
        /// Desabilita Aba Financiamento POP
        /// </summary>
        public void DesabilitarAbaFinanciamentoPOP()
        {
            this.tabFinanciamentoPop.IsEnabled = false;
        }

        /// <summary>
        /// Desabilita Ativo
        /// </summary>
        public void DesabilitarAtivo()
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                TxtFormularioAtivo.IsRequired = false;
                BtnFormularioAtivo.IsEnabled = false;
                TxtFormularioAtivo.IsEnabled = false;                
                TxtFormularioAtivo.Text = String.Empty;
                TxtFormularioDescricaoAtivo.Text = String.Empty;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorTextBox txtInsertAtivo = (SinacorTextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtInsertAtivo");

                    if (txtInsertAtivo != null)
                    {
                        txtInsertAtivo.IsRequired = false;
                        txtInsertAtivo.IsEnabled = false;
                        txtInsertAtivo.Text = String.Empty;
                    }
                }
            }
        }

        public void DesabilitarCarteira()
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                PresenterManutencaoOrdens.OrdemAtual.Carteira = 0;
                TxtFormularioCarteira.IsEnabled = false;
            }
            else
            {
                this.CurrentModel.Carteira = 0;

                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorInt32TextBox txtInsertCarteira = (SinacorInt32TextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtInsertCarteira");

                    if (txtInsertCarteira != null)
                        txtInsertCarteira.IsEnabled = false;
                }
            }
        }

        /// <summary>
        /// Desabilitar Mercado
        /// </summary>
        public void DesabilitarMercado()
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                CboFormularioTipoMercado.IsEnabled = false;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorComboBox cboTiposMercados = (SinacorComboBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "cboTiposMercados");

                    if (cboTiposMercados != null)
                        cboTiposMercados.IsEnabled = false;
                }
            }
        }

        /// <summary>
        /// Desabilita Natureza Operacao
        /// </summary>
        /// <param name="naturezaOperacao"></param>
        public void DesabilitarNaturezaOperacao()
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                RbtFormularioNaturezaCompra.IsEnabled = false;
                RbtFormularioNaturezaVenda.IsEnabled = false;

                RbtFormularioNaturezaCompra.IsChecked = false;
                RbtFormularioNaturezaVenda.IsChecked = false;

                PresenterManutencaoOrdens.OrdemAtual.NaturezaOperacao = null;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorComboBox cboNatOper = (SinacorComboBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "cboNatOper");

                    if (cboNatOper != null)
                    {
                        cboNatOper.IsEnabled = false;
                        cboNatOper.IsRequired = false;
                    }

                    this.CurrentModel.NaturezaOperacao = null;
                }
            }
        }

        /// <summary>
        /// Habilita Aba Financiamento POP
        /// </summary>
        public void HabilitarAbaFinanciamentoPOP()
        {
            this.tabFinanciamentoPop.IsEnabled = true;
        }

        /// <summary>
        /// Habilitar Alteracao Ativo
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoAtivo(bool habilita)
        {
            //Na edição só habilita se o usuário tiver permissão
            bool permitir = (habilita
                             && !(PresenterManutencaoOrdens.Estado == Model.Enum.EstadoTela.Alteracao
                                     && !PresenterManutencaoOrdens.Permissoes.PermiteAlterarAtivo));

            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Ativo"].IsEnabled = permitir;
            }
            else
            {
                dtgOrdens.Columns["Ativo"].AllowUpdate = permitir;
            }

            BtnFormularioAtivo.IsEnabled = permitir;
            TxtFormularioAtivo.IsEnabled = permitir;
        }

        /// <summary>
        /// Habilitar Alteracao Bolsa
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoBolsa(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Bolsa"].IsEnabled = habilita;
            }

            CboFormularioBolsa.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Carteira
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoCarteira(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Carteira"].IsEnabled = habilita;
            }

            TxtFormularioCarteira.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Cliente
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoCliente(bool habilita)
        {
            //Na edição só habilita se o usuário tiver permissão
            bool permitir = (habilita
                             && !(PresenterManutencaoOrdens.Estado == Model.Enum.EstadoTela.Alteracao
                                     && !PresenterManutencaoOrdens.Permissoes.PermiteAlterarAtivo));

            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    dtgOrdens.GetEditRow().Cells["Cliente"].IsEnabled = permitir;
                    dtgOrdens.GetEditRow().Cells["Digito"].IsEnabled = permitir;
                }
            }
            else
            {
                dtgOrdens.Columns["Cliente"].AllowUpdate = permitir;
                dtgOrdens.Columns["Digito"].AllowUpdate = permitir;
            }

            BtnFormularioCliente.IsEnabled = permitir;
            TxtFormularioApelidoCliente.IsEnabled = permitir;
            TxtFormularioDigitoCliente.IsEnabled = permitir;
        }

        /// <summary>
        /// Habilitar Alteracao Data Validade
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoDataValidade(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Validade"].IsEnabled = habilita;
            }

            DtpFormularioValidade.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Despreza Saldo
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoDesprezaSaldo(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["DesprezarSaldo"].IsEnabled = habilita;
            }

            ChkFormularioDesprezarSaldo.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Discricionaria
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoDiscricionaria(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Discricionaria"].IsEnabled = habilita;
            }

            ChkFormularioDiscricionaria.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Emissor
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoEmissor(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Emissor"].IsEnabled = habilita;
            }

            CboFormularioEmissor.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Indicador Sistema Externo
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoIndicadorSistemaExterno(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["IndicadorSistemaExterno"].IsEnabled = habilita;
            }

            TxtFormularioIndSistExterno.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Mercado
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoMercado(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Mercado"].IsEnabled = habilita;
            }

            CboFormularioTipoMercado.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Natureza Operacao
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoNaturezaOperacao(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["NaturezaOperacao"].IsEnabled = habilita;
            }

            RbtFormularioNaturezaCompra.IsEnabled = habilita;
            RbtFormularioNaturezaVenda.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Operador
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoOperador(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Operador"].IsEnabled = habilita;
            }

            CboFormularioOperador.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Ordem Original
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoOrdemOriginal(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["OrdemOriginal"].IsEnabled = habilita;
            }

            TxtFormularioNumeroOrdemOriginal.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Percentual Corretagem
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoPercentualCorretagem(bool habilita)
        {
            //Na edição só habilita se o usuário tiver permissão
            bool permitir = (habilita
                             && !(PresenterManutencaoOrdens.Estado == Model.Enum.EstadoTela.Alteracao
                                     && !PresenterManutencaoOrdens.Permissoes.PermiteAlterarAtivo));

            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["PercAcrescimoReducao"].IsEnabled = permitir;
            }
            else
            {
                dtgOrdens.Columns["PercAcrescimoReducao"].AllowUpdate = permitir;
            }

            TxtFormularioPercentAcrescimoReducao.IsEnabled = permitir;
        }

        /// <summary>
        /// Habilitar Alteracao Percentual Financiamento
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoPercentualFinanciamento(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["PercFinanciamento"].IsEnabled = habilita;
            }

            TxtFormularioPercentualFinanciamento.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Preco
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoPreco(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Preco"].IsEnabled = habilita;
            }

            TxtFormularioPreco.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Quantidade
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoQuantidade(bool habilita)
        {
            //Na edição só habilita se o usuário tiver permissão
            bool permitir = (habilita
                             && !(PresenterManutencaoOrdens.Estado == Model.Enum.EstadoTela.Alteracao
                                     && !PresenterManutencaoOrdens.Permissoes.PermiteAlterarAtivo));

            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Quantidade"].IsEnabled = permitir;
            }
            else
            {
                dtgOrdens.Columns["Quantidade"].AllowUpdate = permitir;
            }

            TxtFormularioQuantidade.IsEnabled = permitir; 
        }

        /// <summary>
        /// Habilitar Alteracao Quantidade AnexoIV
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoQuantidadeAnexoIV(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["QtdeAnexoIV"].IsEnabled = habilita;
            }

            TxtFormularioQuantidadeAnexo4.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao QuantidadeAnexoV
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoQuantidadeAnexoV(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["QtdeAnexoV"].IsEnabled = habilita;
            }

            TxtFormularioQuantidadeAnexo5.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Situacao
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoSituacao(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Situacao"].IsEnabled = habilita;
            }

            CboFormularioSituacao.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Tipo Liquidacao
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoTipoLiquidacao(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["TipoLiquidacao"].IsEnabled = habilita;
            }

            CboFormularioTipoDeLiquidacao.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao TipoOrdem
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoTipoOrdem(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["Tipo"].IsEnabled = habilita;
            }

            CboFormularioTipoOrdem.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Valor Financiamento
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoValorFinanciamento(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["ValorFinanciamento"].IsEnabled = habilita;
            }

            TxtFormularioValorFinanciamento.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Valor Dolar
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoValorDolar(bool habilita)
        {
            TxtFormularioValorDolar.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilitar Alteracao Vencimento Termo
        /// </summary>
        /// <param name="habilita"></param>
        public void HabilitarAlteracaoVencimentoTermo(bool habilita)
        {
            if (dtgOrdens.IsUpdating)
            {
                if (dtgOrdens.GetEditRow() != null)
                    dtgOrdens.GetEditRow().Cells["VencimentoTermo"].IsEnabled = habilita;
            }

            TxtFormularioVencimentoTermo.IsEnabled = habilita;
        }

        /// <summary>
        /// Habilita Ativo
        /// </summary>
        public void HabilitarAtivo()
        {
            //Na edição só habilita se o usuário tiver permissão
            bool permitir = !(PresenterManutencaoOrdens.Estado == Model.Enum.EstadoTela.Alteracao
                                     && !PresenterManutencaoOrdens.Permissoes.PermiteAlterarAtivo);

            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                BtnFormularioAtivo.IsEnabled = permitir;
                TxtFormularioAtivo.IsEnabled = permitir;
                TxtFormularioAtivo.IsRequired = true;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorTextBox txtInsertAtivo = (SinacorTextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtInsertAtivo");

                    if (txtInsertAtivo != null)
                    {
                        txtInsertAtivo.IsEnabled = permitir;
                        txtInsertAtivo.IsRequired = true;
                    }
                }
            }
        }

        /// <summary>
        /// Habilita Campo Quantidade
        /// </summary>
        public void HabilitarCampoQuantidade()
        {
            //Na edição só habilita se o usuário tiver permissão
            bool permitir = !(PresenterManutencaoOrdens.Estado == Model.Enum.EstadoTela.Alteracao
                              && !PresenterManutencaoOrdens.Permissoes.PermiteAlterarAtivo);

            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                TxtFormularioQuantidade.IsEnabled = permitir;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorDecimalTextBox txtInsertQuantidade = (SinacorDecimalTextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtInsertQuantidade");

                    if (txtInsertQuantidade != null)
                        txtInsertQuantidade.IsEnabled = permitir;
                }
            }
        }

        /// <summary>
        /// Habilita Carteira
        /// </summary>
        public void HabilitarCarteira()
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                TxtFormularioCarteira.IsEnabled = true;
                TxtFormularioCarteira.UpdateTarget(SinacorInt32TextBox.ValueProperty);
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorInt32TextBox txtInsertCarteira = (SinacorInt32TextBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "txtInsertCarteira");

                    if (txtInsertCarteira != null)
                        txtInsertCarteira.IsEnabled = true;
                }
            }
        }

        /// <summary>
        /// Habilitar Mercado
        /// </summary>
        public void HabilitarMercado()
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                CboFormularioTipoMercado.IsEnabled = true;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorComboBox cboTiposMercados = (SinacorComboBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "cboTiposMercados");

                    if (cboTiposMercados != null)
                        cboTiposMercados.IsEnabled = true;
                }
            }
        }

        /// <summary>
        /// Habilita Natureza Operacao
        /// </summary>
        /// <param name="naturezaOperacao"></param>
        public void HabilitarNaturezaOperacao()
        {
            if (PresenterManutencaoOrdens.ModoUtilizado == Model.Enum.ModoTela.Formulario)
            {
                RbtFormularioNaturezaCompra.IsEnabled = true;
                RbtFormularioNaturezaVenda.IsEnabled = true;
            }
            else
            {
                if (dtgOrdens.GetEditRow() != null)
                {
                    SinacorComboBox cboNatOper = (SinacorComboBox)ControlHelper.FindChild(dtgOrdens.GetEditRow(), "cboNatOper");

                    if (cboNatOper != null)
                    {
                        cboNatOper.IsEnabled = true;
                        cboNatOper.IsRequired = true;
                    }
                }
            }
        }

        public void SelecionarOrdem(Model.Ordem ordem)
        {
            dtgOrdens.SelectedItems.Add(ordem);
        }

        /// <summary>
        /// Informa Movimento Fechado
        /// </summary>
        public void InformarMovimentoFechado()
        {
            SinacorMessageBox.Show(FindResource("Bovespa.ManutencaoOrdens.ExceptionMessage.MovimentoOrdensFechado").ToString(), SinacorMessageBoxImage.Exclamation);
        }

        /// <summary>
        /// Informa Nenhuma Ordem Encontrada
        /// </summary>
        public void InformarNenhumaOrdemEncontrada()
        {
            SinacorMessageBox.Show(FindResource("Bovespa.ManutencaoOrdens.Message.NenhumRegistroEncontrado").ToString(), SinacorMessageBoxImage.Exclamation);
            this.tabPesquisa.IsSelected = true;
        }

        /// <summary>
        /// Informa Ordem Nao Aceita Casamento
        /// </summary>
        public void InformarOrdemNaoAceitaCasamento()
        {
            SinacorMessageBox.Show(TryFindResource("Bovespa.ManutencaoOrdens.Message.OrdemNaoAceitaCasamento").ToString(), SinacorMessageBoxImage.Exclamation);
        }

        /// <summary>
        /// Informa Sucesso Fechar Ordem Adm Concorrente
        /// </summary>
        public void InformarSucessoFecharOrdemAdmConcorrente()
        {
            SinacorMessageBox.Show(FindResource("Bovespa.ManutencaoOrdens.Message.FecharOrdemAdmConcorrenteSucesso").ToString(), SinacorMessageBoxImage.Information);
        }

        /// <summary>
        /// Informa Usuario Sem Permissao Retroativa
        /// </summary>
        public void InformarUsuarioSemPermissaoRetroativa()
        {
            SinacorMessageBox.Show(TryFindResource("Bovespa.ManutencaoOrdens.Message.UsuarioSemPermissaoRetroativo").ToString(), SinacorMessageBoxImage.Exclamation);
        }

        /// <summary>
        /// Informa Operacao Realizada com Sucesso
        /// </summary>
        public void InformarOperacaoRealizadaSucesso()
        {
            SinacorMessageBox.Show(TryFindResource("Bovespa.ManutencaoOrdens.Message.OperacaoRealizadaSucesso").ToString(), SinacorMessageBoxImage.Information);
        }

        /// <summary>
        /// Proibi Acesso
        /// </summary>
        public void ProibirAcesso()
        {
            SinacorMessageBox.Show(FindResource("Bovespa.ManutencaoOrdens.Message.AcessoSomenteOperador").ToString(), SinacorMessageBoxImage.Exclamation);
            base.Close();
            return;
        }

        #endregion
    }
}
